package com.project.mapper;

import com.project.bean.UserBean;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

public interface IUserMapper {
    /**
     * 添加业务
     * @param user 用户对象
     */
    void add(UserBean user);

    /**
     * 按id删除用户
     * @param id 用户id
     */
    void del(int id);

    /**
     * 修改密码
     * @param id 用户id
     * @param pwd 用户密码
     */
    void update(@Param("id") int id, @Param("pwd") String pwd);

    /**
     * 查找所有用户
     * @return 用户集合
     */
    List<UserBean> findAll();

    /**
     * 按姓名模糊查询
     * @param name 姓名
     * @return 用户集合
     */
    List<UserBean> findByName(String name);

    /**
     * 按生日查询用户
     * @param startDate 起始日期
     * @param endTime 结束日期
     * @return 用户集合
     */
    List<UserBean> findByBirthday(@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endTime);

    /**
     * 批量添加用户
     * @param list 要添加的用户集合
     */
    void addMore(@Param("list") List<UserBean> list);

    /**
     * 批量删除
     * @param idArr 用户id数组
     */
    void delMore(@Param("idArr") int[] idArr);

    /**
     * 动态查询
     * @param name 姓名
     * @param startDate 起始日期
     * @param endDate 结束日期
     * @return 用户集合
     */
    List<UserBean> findByItem(
            @Param("name") String name,@Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate
    );

    /**
     * 分页查询当前页数据
     * @param startRow 起始记录数
     * @param pageSize 每页显示记录数
     * @return 用户集合
     */
    List<UserBean> cutAllList(@Param("startRow") Integer startRow,@Param("pageSize") Integer pageSize);

    /**
     * 查询用户的数量
     * @return 用户数量
     */
    int cutAllCount();
}
